查看原文
其他

findname——想要什么找什么

爬虫俱乐部 Stata and Python数据分析 2022-03-15
本文作者:魏若芙,河南大学经济学院

本文编辑:喻淑敏

技术总编:李婷婷

Stata&Python云端课程来啦!

        为了平衡团队运营成本,维系公众号的运营,也与国内动辄数千元的Stata课程缩短差距,我们的网课不得不上调价格,我们决定于2022年1月15日起调价,Python课程的价格调整为299.9元Stata进阶课程调为299.9元Stata基础课程调整到329.9元。大家可以告知一下身边想要购买的小伙伴,欲购从速哦,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言~我们在这篇推文提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~此外凭考研准考证和任意一推文集够50个赞,购买爬虫俱乐部的主要课程,即可获得50元的优惠,大家赶快行动起来吧~


 1.导读



 在运用Stata进行数据分析时,我们可能会用到很多微观调查数据,这些数据通常会包含很多变量,在处理的过程中一不小心就会忘记变量名,之前我们介绍过用来列出变量值的levelsof命令,那怎么可以列出数据集中的变量名呢?这时候就需要引出findname命令。findname不仅可以用来列出当前数据集中的所有变量名,还可以列出具有指定特征的变量,而且findname命令具有返回值,方便我们后续对变量名进行调用。


2.命令安装及语法介绍


初次使用findname时,需要进行安装,安装命令如下:

2.1 命令安装

初次使用findname时,需要进行安装,安装命令如下:

ssc install findname


 在Stata中,findname命令的语法结构也比较简单,如下所示:

findname [varlist] [if] [in] [, options]


2.2 选项介绍

findname命令的选项有很多,这些选项分为五类,我们接下来先大致了解一下这些选项的作用。



display选项
  • alpha 输出时按字母顺序列出变量名;

  • detail 输出时显示更多细节,如变量格式、类型、标签等 ;
  • indent(#) 在输出变量名到结果窗口时,指定每行缩进的空格数;其中#代表空格数;
  • skip(#) 在输出变量名时设置每个变量之间的差距;默认的间距是skip(2)
  • varwidth(#)输出时设置变量名的显示宽度;默认的宽度是varwidth (12),其中,#是变量宽度,其范围在5-32之间。 



按变量类型、值和格式选择

  • type(typelist)选择指定类型列表中的变量。比如:输入findname, type(string)将列出所有的名称数据集中的字符串变量,键入findname a*, type(string)将列出以字母a开头的字符串变量的所有名称;

  • type(patternlist)显示格式与括号内patternlist匹配的变量;

  • all(condition)显示满足条件的所有变量;

  • any(condition)显示满足条件的任何变量。




按变量和值标签选择变量
  • varlabel选择具有定义变量标签的变量;   
  • varlabeltext(patternlist) 选择变量标签匹配某种模式的变量;
  • vallabel 选择具有定义值标签的变量;
  • vallabelname(patternlist) 选择值标签名称匹配某种模式的变量;
  • vallabeltext(patternlist) 选择值标签内容匹配某种模式的变量。 


按特征选择

  • char 选择具有定义特征的变量;                
  • charname(patternlist) 选择特征名称与pattrnlist匹配的变量;
  • chartext(patternlist) 选择特征内容与pattrnlist匹配的变量。


control选项

  • insensitive  执行不区分大小写的模式匹配;

  • local(macname)  将变量名列表放在宏macname中;

  • not 列出不符合条件的变量名;

  • placeholder(symbol) 指定一个其他字符替代@,与all(condition)和any(condition)同时使用。

     
3.实例操作

 经过上面的介绍,大家是不是觉得还是有些摸不着头脑?这么多选项,要怎么使用呢?别急,下面就带大家通过简单的auto数据,按照选项类型分别介绍几个简单的小例子,快速上手,利用findname进行数据分析~

首先我们先读入auto数据:

clear all //清空内存sysuse auto //读入auto数据

当我们直接输入findname命令时,就会在结果窗口显示出所有的变量名称。


3.1 设置变量在结果窗口的显示




  利用display选项,我们可以设置变量在结果窗口中的输出格式。  我们执行findname, alpha,得到的变量名就是将变量首字母按照字母表进行顺序,排列显示在屏幕上,如下图所示:
findname, alpha


输入findname我们能看到所有变量的名称,如果需要变量的详细信息,我们可以输入findname, detail,显示变量的类型、格式、标签等信息:

findname,detail

alpha、detail 选项设置了变量在结果窗口显示的顺序、内容。那如果我们想设置变量的显示样式又该如何呢?这时我们可以使用indent(#)、skip(#)、varwidth(#)这些选项进行排版,让变量名按我们想要的格式进行输出。例如:

findname, indent(2) skip(6) varwidth(5) //设置显示变量名时每行缩进2,变量名之间的间距为6,变量名的显示宽度为5


3.2 按照类型、格式和值输出变量名
(1)按照变量类型输出变量名

在之前的推文中,我们介绍过变量类型的几种格式,分别有:numeric,string,byte,int,long,float,double等,在findname命令中,就可以用type选项来筛选你需要的变量名。

findname, type(string) //显示数值型变量findname, type(1/20) //显示变量类型为str1、str2、str3...str20的变量findname, type(string) not//添加not选项,表示找到除string字符型类型的变量

以上只展示了几种简单的情况,大家可以将string换成其他类型,举一反三~

(2)按照变量格式输出变量名

format选项可以列出指定格式的变量,例如:

findname, format(*f) //显示出格式以f结尾的变量,可能是%#.#f, %0#.#f, 或者%-#

由于数据类型较多,这里就不再一一赘述,大家可以根据自己数据处理的需要来改变format()括号中的内容从而找到自己需要的变量。

(3)按照变量值输出变量名

通过all(condition)和any(condition)这两个选项,findname能够列出变量观测值满足某种条件(condition代表一种true或者false的状态)的变量名。

findname, all(@==0) //找到变量值全为0的变量,其中@代表变量名findname, any(@==0) //找到变量值含有0的变量


     这两个选项可以通过添加条件语句if和in来设置范围,比如:
findname in 1/50, all(@==0) //找到前50行中变量值全为0的变量另外,placeholder(symbol)选项是为了配合all(condition)和any(condition)这两个选项使用的。假设你的键盘@键坏了,可以设置其他占位符来替代@表示变量名。
findname, placeholder(#) any(#==0) //设置占位符#来替代

3.3 按变量标签和值标签输出变量名

varlabelvarlabeltext(patternlist)vallabelvallabelname(patternlist)

选项可以通过变量标签或者值标签筛选变量,例如:

findname, varl //选择具有定义变量标签的变量findname, vall //选择具有值标签的变量findname, varl(Price) //选择变量标签为Price的变量findname, vall(origin) //选择值标签为origin的变量


  vallabeltext(patternlist)varlabeltext(patternlist)选项可以找到值标签和变量标签内容符合patternlist的变量,例如:
findname, vallabeltext(*n) //选择值标签以字母n结尾的变量


 以上我们基本介绍了findname比较实用的选项,如果数据中的变量含有其它的定义特征,还可以添加char选项来筛选变量,用法和varlabel基本一致,大家可以动手试一试~

3.4 返回值



  我们已经介绍了findname会将返回值保存在r(varlist)中,同时findname命令还有local()选项,可自定义局部宏名称,方便后续进行调用。我们看一下调用返回值的一个小例子:
findname,type(byte) local(bytevarlist) //选择字节型变量并把它们放在宏bytevarlist中sum `r(varlist)' dis "`r(varlist)'" //此时该返回值被覆盖而不存在di "`bytevarlist'" //而已经定义的局部宏不会被覆盖

以上就是findname的全部内容啦,大家在处理数据时可以活学活用,将多个选项一起使用,筛选需要的变量进行描述性统计或者回归等操作,期待大家留言交流哦!


END
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。




腾讯课堂课程二维码








            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐

      Python字符串之“分分合合”

       PDF转docx可批量操作?——wordconvert的小技巧

       考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

       Seminar丨董事会的性别多样化和企业创新:来自国际的证据

      Python与数据库交互——窗口函数

       Stata之post命令——数据邮递 

       爬虫俱乐部成员的Stata学习经验分享来啦!

       Seminar丨2002年萨班斯·奥克斯利法案的经济后果

        我几乎画出了“隔壁三哥”家的国旗

        Python基础——三大数字类型,你都了解吗?
        如何用Stata绘制带指向性箭头标注的图像       
        Seminar丨荐仆贷款——19世纪中国的信任辅助贷款【技能篇】多进程队列间通信

Seminar丨公司董事会的人才增长:来自中国的证据

正则表达式--懒惰模式

爬完独立董事的年薪,我的眼镜跌破了!识别旅游“照骗”——看风景名胜是否名副其实主成分分析的Python实现

正则表达式--贪婪模式

Seminar丨谁更重要:高管股权薪酬与财务报告欺诈DOS能量,超乎你想象!

爬虫实战丨走进哈利波特的魔法世界

数据集合并的新路子-frlink命令

Seminar丨附近的公司:利用卫星图像研究本地信息优势

线性同余法生成伪随机数 

[技能篇]多线程爬虫

“好哭”是衡量一部好电影的标准吗?

Stata&Python云端课程来啦!

带你了解Stata中的矩阵

Seminar|总统的朋友:政治关联与企业价值
爬虫实战 | 爬取中国天气网

爬虫实战 | 爬取东方财富网经济数据——以居民消费价格指数(CPI)为例

Seminar|媒体关联董事对融资和外部治理的影响神奇的组内交叉合并 

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存